﻿Imports Negocio
Imports Entidad
Imports Utilitario

Public Class frmAsignarBalanza

    Dim CIA As String = "01"
    Dim SUC As String = "01"
    Dim tipoDOC As String = "P"
    Dim tipo As String
    Dim usuario As String = ""

    Dim ds As New DataSet

    Dim servicio1 As New DocumentoAlmacenDetallePickeadorUbicacionBandejaNegocio
    Dim servicio2 As New DocumentoClienteBalanzaNegocio
    Dim servicio3 As New DocumentoClienteNegocio
    Dim servicio4 As New BalanzaNegocio
    Dim servicio5 As New AuditoriaNegocio

    Sub actDesBotones(valor As Boolean)
        btnAsignarBAL1.Enabled = valor
        btnAsignarBAL2.Enabled = valor
        btnAsignarBAL3.Enabled = valor
        btnAsignarBAL4.Enabled = valor
    End Sub

    Function devuelvePorcentaje(lblSub As Integer, lbl As Integer) As String
        Try
            Dim cantidad As Decimal = CDec((lblSub * 100) / lbl)

            Return cantidad.ToString("##,##0.00") & " %"
        Catch ex As OverflowException
            Return "0.0 %"
        End Try
    End Function

    Sub mostrarPorcentajes()
        lblPorcentaje1.Text = devuelvePorcentaje(CInt(lblCantPed1.Text), CInt(lblTotalPedidos.Text))
        lblPorcentaje2.Text = devuelvePorcentaje(CInt(lblCantPed2.Text), CInt(lblTotalPedidos.Text))
        lblPorcentaje3.Text = devuelvePorcentaje(CInt(lblCantPed3.Text), CInt(lblTotalPedidos.Text))
        lblPorcetaje4.Text = devuelvePorcentaje(CInt(lblcantPed4.Text), CInt(lblTotalPedidos.Text))
    End Sub

    Sub mostrarCantidades()
        ds = servicio2.obtenerCantidadPedidosBandejasXBalanza()

        lblCantPed1.Text = ds.Tables(0).Rows(0)("CantPed").ToString.Trim
        lblCantBan1.Text = ds.Tables(0).Rows(0)("CantBand").ToString.Trim

        lblCantPed2.Text = ds.Tables(0).Rows(1)("CantPed").ToString.Trim
        lblCantBan2.Text = ds.Tables(0).Rows(1)("CantBand").ToString.Trim

        lblCantPed3.Text = ds.Tables(0).Rows(2)("CantPed").ToString.Trim
        lblCantBan3.Text = ds.Tables(0).Rows(2)("CantBand").ToString.Trim

        lblcantPed4.Text = ds.Tables(0).Rows(3)("CantPed").ToString.Trim
        lblCantBan4.Text = ds.Tables(0).Rows(3)("CantBand").ToString.Trim
    End Sub

    Sub mostraMensaje(ByVal men As String)
        MsgBox(men, MsgBoxStyle.Information, "Mensajes al Usuario")
    End Sub

    Sub mostrarCantidadTotalPedidos()
        Dim balanza1 As Integer = CInt(lblCantPed1.Text)
        Dim balanza2 As Integer = CInt(lblCantPed2.Text)
        Dim balanza3 As Integer = CInt(lblCantPed3.Text)
        Dim balanza4 As Integer = CInt(lblcantPed4.Text)
        Dim total As Integer = balanza1 + balanza2 + balanza3 + balanza4

        lblTotalPedidos.Text = CStr(total)
    End Sub

    Sub mostrarCantidadTotalBandejas()
        Dim balanza1 As Integer = CInt(lblCantBan1.Text)
        Dim balanza2 As Integer = CInt(lblCantBan2.Text)
        Dim balanza3 As Integer = CInt(lblCantBan3.Text)
        Dim balanza4 As Integer = CInt(lblCantBan4.Text)
        Dim total As Integer = balanza1 + balanza2 + balanza3 + balanza4

        lblTotalBandejas.Text = CStr(total)
    End Sub

    Sub asignarBalanza(codigoBalanza As String, codPedido As String, mensaje As String)
        If MsgBox(mensaje, MsgBoxStyle.Question + MsgBoxStyle.YesNo + MsgBoxStyle.DefaultButton2, "Mensajes al Usuario") = MsgBoxResult.Yes Then
            Dim dcb As New DocumentoClienteBalanza(CIA, SUC, tipoDOC, codPedido, codigoBalanza, "1")
            Dim resultado As String = servicio2.registrarDocumentoAlmacenBalanza(dcb)
            If resultado = "Asignación correcta." Then
                servicio1.actualizarBandejaDADPUB(codigoBalanza, txtBandeja.Text.Trim, codPedido)
                Dim cantidad As Integer = servicio2.cantidadBandejasNoAsignadasDADPUB(dcb)

                If cantidad = 0 Then
                    servicio4.actualizarFechaFinDCB(txtPedido.Text, codigoBalanza)
                    servicio5.actualizarUsuarioEstadoPedido(usuario, EST_ControlBalanza, CIA, SUC, tipoDOC, txtPedido.Text.Trim)
                End If
            End If

            mostraMensaje(resultado)
            txtPedido.Text = ""
            txtCantItems.Text = ""
            txtLargos.Text = ""
            txtBandeja.Text = ""
            txtBandeja.Focus()

            mostrarCantidades()
            mostrarCantidadTotalPedidos()
            mostrarCantidadTotalBandejas()
            actDesBotones(False)
            mostrarPorcentajes()
        Else
            txtBandeja.Focus()
        End If
    End Sub

    Private Sub frmAsignarBalanza_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        mostrarCantidades()
        mostrarCantidadTotalPedidos()
        mostrarCantidadTotalBandejas()
        mostrarPorcentajes()
    End Sub

    Private Sub btnAsignarBAL1_Click(sender As System.Object, e As System.EventArgs) Handles btnAsignarBAL1.Click
        Dim balanza As String = "BAL001"
        asignarBalanza(balanza, txtPedido.Text.Trim, "¿Está seguro de asignar la bandeja a la Balanza 1?")
    End Sub

    Private Sub btnAsignarBAL2_Click(sender As System.Object, e As System.EventArgs) Handles btnAsignarBAL2.Click
        Dim balanza As String = "BAL002"
        asignarBalanza(balanza, txtPedido.Text.Trim, "¿Está seguro de asignar la bandeja a la Balanza 2?")
    End Sub

    Private Sub btnAsignarBAL3_Click(sender As System.Object, e As System.EventArgs) Handles btnAsignarBAL3.Click
        Dim balanza As String = "BAL003"
        asignarBalanza(balanza, txtPedido.Text.Trim, "¿Está seguro de asignar la bandeja a la Balanza 3?")
    End Sub

    Private Sub btnAsignarBAL4_Click(sender As System.Object, e As System.EventArgs) Handles btnAsignarBAL4.Click
        Dim balanza As String = "BAL004"
        asignarBalanza(balanza, txtPedido.Text.Trim, "¿Está seguro de asignar la bandeja a la Balanza 4?")
    End Sub

    Private Sub btnAceptar_Click(sender As System.Object, e As System.EventArgs) Handles btnAceptar.Click
        lblAsigAuto.Visible = False
        lblBalanzaAuto.Text = ""
        lblBalanzaAuto.Visible = False
        actDesBotones(False)
        txtLargos.Text = ""
        txtCantItems.Text = ""
        txtPedido.Text = ""
        txtBandeja.Text = ""
        btnAceptar.Visible = False
        txtBandeja.Focus()
    End Sub

    Private Sub txtBandeja_KeyPress(sender As Object, e As System.Windows.Forms.KeyPressEventArgs) Handles txtBandeja.KeyPress
        If e.KeyChar = ChrW(Keys.Enter) Then
            'obtendria los pedidos de la bandeja del sistema
            'If txtBandeja.Text.Trim = "010100SIS00" Then
            '    Dim ds As DataSet = servicio1.obtenerPedidosXBandeja(txtBandeja.Text.Trim)
            '    Dim frmPedBandejaSistema As New frmPedidosXBandeja(ds)
            '    If frmPedBandejaSistema.ShowDialog = Windows.Forms.DialogResult.OK Then
            '        'no se que poner aqui -... XD
            '    Else
            '        Exit Sub
            '    End If
            'Else
            '    
            'End If
            codigoPedido = servicio1.obtenerPedidoXBandeja(txtBandeja.Text)

            If codigoPedido = "" Then
                mostraMensaje("Bandeja no disponible.")
                txtPedido.Text = ""
                txtCantItems.Text = ""
                txtLargos.Text = ""
                actDesBotones(False)
            Else
                Dim ds As DataSet = servicio2.verificarBandejaAsignadoBalanza(txtBandeja.Text, codigoPedido)
                If ds.Tables(0).Rows(0)("Balanza").ToString.Trim <> "" Then
                    mostraMensaje("Bandeja ya asignada.")
                    txtBandeja.Text = ""
                    txtBandeja.Focus()
                Else
                    txtPedido.Text = codigoPedido

                    If txtPedido.Text <> "" Then
                        txtCantItems.Text = servicio1.obtenerCantidadItems(txtPedido.Text.Trim)
                        txtLargos.Text = servicio1.obtenerCantidadItemsLargos(txtPedido.Text.Trim, "P")
                    End If

                    Dim dcb As New DocumentoClienteBalanza(CIA, SUC, tipoDOC, codigoPedido, Nothing, Nothing)
                    Dim balanza As String = servicio2.obtenerBalanzaAsignadoPedido(dcb)

                    If balanza <> "" Then
                        servicio1.actualizarBandejaDADPUB(balanza, txtBandeja.Text.Trim, codigoPedido)
                        Dim cantidad As Integer = servicio2.cantidadBandejasNoAsignadasDADPUB(dcb)

                        If cantidad = 0 Then
                            servicio4.actualizarFechaFinDCB(txtPedido.Text, balanza)
                            servicio5.actualizarUsuarioEstadoPedido(usuario, EST_ControlBalanza, CIA, SUC, tipoDOC, txtPedido.Text.Trim)
                        End If

                        lblAsigAuto.Visible = True
                        lblBalanzaAuto.Visible = True
                        lblBalanzaAuto.Text = CStr(IIf(balanza = "BAL001", "1", IIf(balanza = "BAL002", "2", IIf(balanza = "BAL003", "3", "4"))))
                        btnAceptar.Visible = True
                        actDesBotones(False)
                    Else
                        actDesBotones(True)
                    End If
                End If
            End If
        End If
    End Sub

    Private Sub btnLimpiar_Click(sender As System.Object, e As System.EventArgs) Handles btnLimpiar.Click
        actDesBotones(False)
        txtPedido.Text = ""
        txtCantItems.Text = ""
        txtLargos.Text = ""
        lblMensaje.Text = ""
        txtBandeja.Text = ""
        txtBandeja.Focus()
    End Sub

End Class
